package top.yehot.cmmu.core.utils;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.Optional;

import org.yaml.snakeyaml.Yaml;

import com.alibaba.fastjson2.JSON;

import top.yehot.cmmu.core.JCoreConst;
import top.yehot.cmmu.core.models.dto.JBootstrapDTO;

/**
 * 获取yaml文件内容
 * 
 * @author lquan
 * @date 2022年4月2日 下午4:48:50
 */
@SuppressWarnings("rawtypes")
public class JYamlUtil {
	
	private static final String filePath = "/bootstrap.yml";

	/**
	 * 设置log对应的文件夹位置
	 */
	public static void setLogPath() {
		setLogPath(filePath);
	}
	
	/**
	 * 设置log对应的文件夹位置
	 */
	public static void setLogPath(String filePath) {
		String name = null;
		
		// 加载yaml文件
		Yaml yaml = new Yaml();
		try (
			InputStream is = JYamlUtil.class.getResourceAsStream(filePath);
			InputStreamReader isr = new InputStreamReader(is, "UTF-8");
		) {
			// 读取文件
			Map map = yaml.loadAs(isr, Map.class);
			// 解析yaml内容，并且映射到class类上
			JBootstrapDTO dto = JSON.parseObject(JSON.toJSONString(map), JBootstrapDTO.class);
			
			// 获取引用名称
			name = dto.getSpring().getApplication().getName();
		} catch (Exception e) {
			System.err.println("[error] 解析" + filePath + "文件失败");
		}
		System.setProperty(JCoreConst.LOG_FILE, Optional.ofNullable(name).orElse(JStrUtil.uuid()));
	}
}
